package cn.scut.srp.aop;

import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;

@Aspect
@Component
@Slf4j
public class AuthCheckInterceptor {

//    @Autowired
//    private JWTUtils jwt;
//
//    @Value("${level.student}")
//    private Integer studentLevel;
//
//    @Value("${level.teacher}")
//    private Integer teacherLevel;
//
//    @Value("${level.admin}")
//    private Integer adminLevel;
//
//    @Around("execution(* cn.scut.srp.controller.afterLogin.admin.*.*(..))")
//    @Order(2)
//    public Object doAdminAuthCheckInterceptor(ProceedingJoinPoint point) throws Throwable {
//
//        return authCheckMethod(point, adminLevel);
//    }
//
//    @Around("execution(* cn.scut.srp.controller.afterLogin.teacher.*.*(..))")
//    @Order(2)
//    public Object doTeacherAuthCheckInterceptor(ProceedingJoinPoint point) throws Throwable {
//
//        return authCheckMethod(point, teacherLevel);
//    }
//
//    @Around("execution(* cn.scut.srp.controller.afterLogin.student.*.*(..))")
//    @Order(2)
//    public Object doStudentAuthCheckInterceptor(ProceedingJoinPoint point) throws Throwable {
//
//        return authCheckMethod(point, studentLevel);
//    }
//
//
//
//    private Object authCheckMethod(ProceedingJoinPoint point, Integer level) throws Throwable {
//        //通过了前面的代理方法,应该是登录了的状态,但似乎不太对劲?
//        String token = (String) point.getArgs()[0];
//        HashMap<String, Object> map = null;
//        try {
//            map = jwt.analyzeToken(token);
//        } catch (ExpiredJwtException e) {
//            return ResponseUtil.loginExpired("登录已超时,请重新登录");
//        }
//
//        Integer userLevel = (Integer) map.get("userLevel");
//        if (userLevel <= level) {
//            return point.proceed();
//        }
//        log.warn("user {} tried a operation with not enough level", map.get("userID"));
//        return ResponseUtil.noAuth("没有访问权限!");
//    }
}
